home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac100% 1998 November
/
MAC100-1998-11.ISO.7z
/
MAC100-1998-11.ISO
/
オンラインソフト定点観測
/
ユーティリティ
/
Mops 3.2.sea
/
Mops 3.2
/
Mops source
/
PPC source
/
test1
< prev
next >
Wrap
Text File
|
1998-06-08
|
1KB
|
80 lines
:class DIC-MARK super{ object }
#threads array LINKS
record { int CURRENT }
private
:m SETC: { ¥ addr index -- index }
0 -> addr 0 -> index
#threads FOR
i at: links dup addr u>
IF -> addr i -> index ELSE drop THEN
NEXT
index put: current ;m
public
:m CURRENT:
get: current at: links ;m
:m SET: { targ_addr ¥ addr in_cg? -- }
targ_addr nuc_code_start u< -> in_cg? ¥ if targ_addr is in the code generator
#threads FOR
context i 2 << + displace -> addr
BEGIN
addr nuc_code_start u< in_cg? xor
addr targ_addr u> or
WHILE ¥ targ_addr not reached yet
addr displace -> addr
REPEAT
addr i to: links
NEXT
setc: self ;m
(*
:m SET: { addr -- }
#threads FOR
context i 2 << + displace
BEGIN dup addr u> ¥ We're 32-bit clean around here!
WHILE displace
REPEAT
i to: links
NEXT
setc: self ;m
*)
:m SETTOTOP:
big# set: self ;m
:m NEXT: { ¥ lfa -- lfa }
get: current at: links
dup -> lfa dup 0EXIT
displace get: current to: links
setc: self lfa
;m
;class
dic-mark TheMARK
0 value words_limit
: xxxx { ¥ svbase svcurs n -- }
setToTop: theMark 0 -> out 0 -> n
cr
BEGIN
next: theMark dup 0<>
¥ n words_limit < and
WHILE
1 ++> n
out 60 >
IF cr 0 -> out ?pause THEN
link> dup 6 .r 2 spaces .id space
20 out 20 mod - spaces
REPEAT
drop
cr ." No of words: " n . cr
;